网络安全中堆栈指纹扫描技术有哪些
网络安全中堆栈指纹扫描技术有以下这些:
ICMP错误消息抑制机制:在公共请求文档RFC1812关于IPv4路由的规定中,对ICMP的错误类型信息(目标不可达、重定向、超时、参数错误等)的发送频率作了限制,但不同操作系统对这种限制的策略不同。例如,Linux内核限制发送目标不可到达信息次数为每4秒80次,如果超过这个限制则会延迟1/4秒。攻击者可以向某个随机的高端UDP端口发送成批的数据包,并计算接收到的目标不可达数据包的数量,来判断操作系统类别。因为要发送大量的数据包并等待它们返回,这种探测操作系统的方法需要时间较长,并且对网络性能会造成一定的影响。
ICMP错误消息引用机制:对于端口不可达信息,几乎所有操作系统都使用了规范的ICMP错误信息栺式,即回送一个IP请求头加8字节长度的包,但Solaris和Linux返回的数据包大于这个长度。据此可猜测目标主机是否使用Linux或Solaris操作系统。
ICMP错误消息回文完整性:当返回端口不可达数据包时,某些操作系统在初始化处理过程中会弄乱返回数据包的包头,这样接收到的数据包中会出现不正常的数据。例如,AIX和BSDi返回的IP包中总长度域会被设置为20字节;又如,BSDi、FreeBSD、OpenBSD、ULTRIX、VAX等操作系统会修改请求头中的IP的ID值;另外,由于TTL值的改变导致校验和需要修改时,AIX、FreeBSD等操作系统将返回不正确的校验和或设置校验和为0。
FIN探查:FIN探查不遵循完整的三次握手连接,而是直接向目标端口发送一个带有FIN标记的TCP数据包。根据有关TCP的RFC793中的图6:TCP连接状态图和3.9节事件处理中的有关规定:当处于关闭、监听、请求同步状态时,如果接收到FIN数据包,则丢弃该包并返回原状态。但MS Windows、BSDi、HP-UX、MVS、IRIX等操作系统并不遵守这个规定,而会使用RESET响应这个FIN数据包。据此,可粗略推断目标主机使用的操作系统类别。
TCP ISN采样:TCP初始序列号(initial sequence number, ISN)采样是利用TCP中初始序列号长度与特定的操作系统相匹配的方法。较早的UNIX版本在处理TCP时,初始序列号长度为64KB; Solaris、IRIX、FreeBSD、DigitalUnix、Cray等操作系统,则使用随机增长的长度;Windows操作系统的序列号长度使用依赖时间的模型,使ISN在每个时间周期递增一个小的固定数值;有一些设备则使用固定的常数,如3Com的集线器使用常数0x803H, Apple LaserWriter打印机使用常数0xc7001。有经验的攻击者甚至可以通过计算有关序列号的函数,来进一步识别操作系统类别。
TCP初始窗口:为提高数据传输效率,TCP使用滑动窗口为两台主机间传送缓冲数据。每台主机支持两个滑动窗口,一个用于接收数据,另一个用于发送数据。窗口尺寸表示计算机可以缓冲的数据量大小。通过在初始化三次握手后检查返回的TCP包窗口大小和改变大小的规律,可识别某些操作系统的类型。
TCP选项:由于并不是所有的操作系统都支持TCP包中的所有选项,所以,可以设计TCP包内容和类型,探测目标操作系统类别,即向目标主机发送带有可选项标记的数据包,如果操作系统支持这些选项,会在返回包中也设置这些标记。
IP协议包头不可分片位:IP协议包头内有一段3位的标志位,其中第一个控制位指定数据包是否被分片。根据RFC1191,当使用最大传输单元路径(maximum transmission unit, MTU)发现技术查询(path MTU, PMTU),以确定传输路径上的最小MTU时,所有TCP数据包必须设置不可分片(don’t fragment, DF)位,但FreeBSD 5.0-CURRENT版本存在缺陷,在SYN-ACK包中没有设置DF位,攻击者可以通过连接服务器并截获网络通信数据判别是否是FreeBSD 5.0-CURRENT系统。